package com.iscas.tech.service;

import com.iscas.tech.entity.AtExperts;
import com.iscas.tech.param.PageParam;
import com.iscas.tech.vo.AtExpertsQueryVo;
import com.iscas.tech.vo.MdWithExpert;
import io.geekidea.springbootplus.framework.common.service.BaseService;
import io.geekidea.springbootplus.framework.pagination.Paging;

/**
 * 专家信息表 服务类
 *
 * @author yangyi
 * @since 2020-10-26
 */
public interface AtExpertsService extends BaseService<AtExperts> {

    /**
     * @param param 人员及标签信息
     * @return 新增专家/科技人才（含标签）
     * @throws Exception 新增异常
     */
    boolean saveAtExperts(MdWithExpert param) throws Exception;

    /**
     * @param param 专家/科技人才详情
     * @return 修改专家/科技人才信息
     * @throws Exception 修改异常
     */
    boolean updateAtExperts(MdWithExpert param) throws Exception;

    /**
     * @param ids    待删除的专家/科技人才主键ID字符串，以","分隔
     * @param mdType 所属功能{@link com.iscas.tech.bo.MdType}
     * @return 删除专家/科技人才信息
     * @throws Exception 删除异常
     */
    boolean deleteExperts(String ids, Integer mdType) throws Exception;

    /**
     * @param pageParam  分页参数
     * @param expertType 专家类型
     * @param audit      审核状态（0-未审核 | 1-已审核）
     * @return 分页获取专家/科技人才列表
     * @throws Exception 查询异常
     */
    Paging<AtExpertsQueryVo> getExpertOrTalentPageList(PageParam pageParam, Integer expertType, Integer audit) throws Exception;

    /**
     * @param id 专家/科技人才主键ID
     * @return 专家/科技人才详情
     */
    AtExpertsQueryVo get(Long id) throws Exception;

    /**
     * @param id 专家/科技人才主键ID
     * @return 审核专家/科技人才信息（标记已通过）
     * @throws Exception 审核异常
     */
    Boolean checkExpertOrTalent(Long id) throws Exception;

}
